package new_user

import (
	"context"
	"git.mycaigou.com/gfyx/micro-gfyx-api/infrastructure/dto/base"
	pb "git.mycaigou.com/gfyx/micro-gfyx-api/proto/micro_gfyx_oppty_service_proto/micro-gfyx-oppty-service/base"
)

type UserRepositoryIface interface {
	// UserList 用户列表
	UserList(ctx context.Context, param *base.UserListParam) ([]*base.User, *base.Page, error)
	// UserSave 新增/更新用户
	UserSave(ctx context.Context, param *base.User) (int64, error)
	// UserDelete 删除用户
	UserDelete(ctx context.Context, param *base.UserDeleteParam) (int64, error)
	// UserForbid 禁止用户
	UserForbid(ctx context.Context, param *base.UserForbidParam) error
	// UserAuthorize 账号授权
	UserAuthorize(ctx context.Context, param *base.UserAuthorizeParam) error
	// UserImport 用户导入
	UserImport(ctx context.Context, userList []*base.User) ([]*pb.ImportUserMsg, error)
	// UserInfo 获取用户信息
	UserInfo(ctx context.Context, request *pb.UserInfoRequest) (*pb.UserInfoResponse, error)
	// SetPassword 设置用户密码
	SetPassword(ctx context.Context, request *pb.ResetPasswordRequest) (*pb.ResetPasswordResponse, error)
	// ResetPassword 重置用户密码
	ResetPassword(ctx context.Context, param *base.ResetPasswordParam) error
	// UserDetail 账号详情
	UserDetail(ctx context.Context, userId int64) (*base.User, error)
	// SetDepartmentHeader 设置负责人/取消负责人
	SetDepartmentHeader(ctx context.Context, param *base.SetDepartmentHeaderParam) error
	// GetAllUserList 获取全量用户
	GetAllUserList(ctx context.Context) (*pb.GetAllUserListResponse, error)
	// GetAllUserWithOrganization 获取全量用户，带组织架构
	GetAllUserWithOrganization(ctx context.Context) (*pb.GetAllUserWithOrganizationResponse, error)
	// GetMyResponsibleAreaUserList 获取我负责的区域用户
	GetMyResponsibleAreaUserList(ctx context.Context, request *pb.GetMyResponsibleAreaUserListRequest) (*pb.GetMyResponsibleAreaUserListResponse, error)
}
